<template>
  <!-- 此处可删去 :data-numbox-max="max"  因为已使用watch监听max并设置最大值 -->
  <div class="mui-numbox" data-numbox-min="1" :data-numbox-max="max">
    <button class="mui-btn mui-btn-numbox-minus" type="button">-</button>
    <input
      id="test"
      class="mui-input-numbox"
      type="number"
      value="1"
      @change="countChanged"
      ref="nobox"
    />
    <button class="mui-btn mui-btn-numbox-plus" type="button">+</button>
  </div>
</template>

<script>
// 导入 mui 从而支持 初始化 数字框
import mui from "../../../lib/mui/js/mui";
export default {
  data() {
    return {};
  },
  methods: {
    countChanged() {
      // 每当 nobox 子组件中的 count 变化之后，要立即把 最新的数量值，传递给goodsinfo父组件
      // 这样，每当我们点击 【加入购物车】按钮时候，就能立即把 最新的 count 值，同步到 购物车的徽标中
      // 这样就涉及到了父子组件传值，子组件向父组件传递数据

      // this.$refs.nobox.value返回一个字符串，需要使用parseInt转换为数字类型
      const val = parseInt(this.$refs.nobox.value);

      this.$emit("func", val);
    },
  },
  mounted() {
    // 当组件挂载到页面中之后，去初始化 数字框
    mui(".mui-numbox").numbox();
  },
  props: ["max"], // 接受父组件传递的最大值max
  watch: {
    // 使用场景： 监听单个的虚拟的数据
    max: function (newvalue, oldvalue) {
      // 不论外界传递给 nobox 的 max 值到底是什么；
      // 最终，最后传递的那个 max 值，肯定是一个 合法的数值；
      // console.log(newvalue + " --- " + oldvalue);
      // 每当 监听到 max 值的改变，不论这个值是否合法，我们都重新为 数字框 ，使用 JS API，来手动设置最大值
      mui(".mui-numbox").numbox().setOption("max", newvalue);
    },
  },
};
</script>

<style lang="scss" scoped>
</style>